#Objective-C#iPhone#Xcode#iOS#Swift
PlistをNSArrayとして読み込む、というのはよくある事だと思います。 その場合、NSArrayの要素がNSDictionaryになる事があります。 この時に、NSArrayをNSDictionaryのKeyの値ごとにソートする方法について投稿します。
NSArray型の配列aryを、aryの各要素であるNSDictionaryのkeyである"foo"で取得出来る値によってソートする場合について記述します。
let sortDescription = NSSortDescriptor(key: "foo", ascending: false)
let sortDescAry = [sortDescription]
ary = ary.sortedArrayUsingDescriptors(sortDescAry) as NSArray
このように書きます。 配列の順番が変更されますが、NSArrayでOKです。 NSSortDescriptorはさらに引数としてselector:やcomparator:を渡す事も出来、ソート条件を指定出来るようですが、ここは私には何がなんだかわかりません。ご存知の方がいらっしゃれば、指定の仕方など教えて下さい。
で、この様に書けば日本語でもソート出来ます。ただ、注意点としては、NSDictionaryに数字が文字列として格納されている場合は、思った通りにソートされません。 具体的には、100よりも99の方が後に来ます。要は文字列なので辞書式になってしまうんですね。 ちゃんとNSDictionaryに数値として格納すれば、これもちゃんとソートしてくれます。 こんな都合のよい関数があるなんて…